home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / djgpp / src / gdb-4.12 / gdb / getinit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-26  |  1.3 KB  |  68 lines

  1. #include <stdio.h>
  2.  
  3. char *skips[] = {
  4.   "Onindy.c",
  5.   "nindy.c",
  6.   "ttyflush.c",
  7.   "xdr_ld.c",
  8.   "xdr_ptrace.c",
  9.   "xdr_rdb.c",
  10.   "udr.c",
  11.   "udip2soc.c",
  12.   "udi2go32.c",
  13.   "version.c",
  14.   "c-exp.tab.c",
  15.   "c-exp-tab.c",
  16.   "m2-exp.tab.c",
  17.   "m2-exp-tab.c",
  18.   "ch-exp.tab.c",
  19.   "ch-exp-tab.c",
  20.   0
  21. };
  22.  
  23. main(int argc, char **argv)
  24. {
  25.   FILE *init = fopen("init.c", "w");
  26.   int i, j;
  27.   FILE *f;
  28.  
  29.   fprintf(init, "/* Do not modify this file.  It is created by getinit */\n");
  30.   fprintf(init, "void initialize_all_files() {\n");
  31.   for (i=1; i<argc; i++)
  32.   {
  33.     int skip=0;
  34.     char *suf = argv[i]+strlen(argv[i])-2;
  35.     if (strcmp(suf, ".o"))
  36.       continue;
  37.     suf[1] = 'c';
  38.     for (j=0; skips[j]; j++)
  39.       if (strcmp(argv[i], skips[j]) == 0)
  40.       {
  41.     skip = 1;
  42.     break;
  43.       }
  44.     if (skip)
  45.       continue;
  46.     f = fopen(argv[i], "r");
  47.     if (f)
  48.     {
  49.       char buf[1000];
  50.       while (fgets(buf, 1000, f))
  51.       {
  52.         if (strncmp(buf, "_initialize", 11) == 0)
  53.         {
  54.           char *e;
  55.           for (e=buf; *e && *e!=' ' && *e!='('; e++)
  56.             ;
  57.           *e = 0;
  58.           fprintf(init, " { extern void %s (); %s();}\n", buf, buf);
  59.         }
  60.       }
  61.       fclose(f);
  62.     }
  63.   }
  64.   fprintf(init, "}\n");
  65.   fclose(init);
  66.   return 0;
  67. }
  68.